package xdb;

public interface CheckpointMBean {

    //public int getCountCheckpoint();
    long getCountMarshalN();

    long getCountMarshal0();

    long getCountFlush();

    long getCountSnapshot();

    // checkpoint 相关时间统计，单位纳秒
    long getTotalTimeMarshalN();

    long getTotalTimeSnapshot();

    long getTotalTimeFlush();
    //public long getTotalTimeCheckpoint();

    // 时间
    String getTimeOfNextFlush();

    String getTimeOfNextCheckpoint();

    /**
     * 马上执行checkpoint操作。
     * 同时发起多个请求，只会执行一次操作，操作完成以后，全部等待线程都会被唤醒。
     * 如果正在进行备份，操作不会马上开始，而是在备份结束后才开始。
     *
     * @param waitTimeout waitTimeout ==0 等待操作结束；>0，最多等待这么多时间；<0不等待；
     * @throws InterruptedException
     */
    void checkpoint(long waitTimeout) throws InterruptedException;

    int getPeriodCheckpoint();

    void setPeriodCheckpoint(int period);
}
